/**
 *函数 (对参数和返回值进行约束)
 * @param username
 * @param age
 */
function f(username:string , age?:number):any {
  return username+age;
}

//调用
let result:any = f('steak');

/*
  函数表达式(比较复杂，直接用上面那种方法)
 */
let result2:(x:number , y:number) => number = function(x:number,y:number) {
  return x+y;
};

/**
 * 参数默认值
 */
function param(username:string='steak',age:number=22):any {
  return username+age;
}

/**
  *剩余参数
 */
function params(...items):void {

}
params(1,2,3,4)

//任意类型
function params2(...items:any[]):void {

}
params(1,2,'3',6)

/**
 * 重载(可以返回不同的类型)
 */
function chongzai(x:number|string|boolean):number|string|boolean {
  if (typeof x === 'number'){

  }
  if (typeof x === 'string'){

  }
  if (typeof x === 'boolean'){

  }
  return x;
}

